#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Judger程序主入口"""

import io
import sys
import traceback

# 设置标准输出编码为UTF-8
if hasattr(sys.stdout, 'reconfigure'):
    sys.stdout.reconfigure(encoding='utf-8')
else:
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

import api
import game


def main() -> None:
    """主函数

    从标准输入读取战斗输入状态数据, 生成AI命令并输出到标准输出
    """
    try:
        api.init()

        # 从标准输入读取数据
        input_data = sys.stdin.read()

        # 解析输入
        input_state = api.parse_input_state(input_data)

        # 生成本回合游戏命令集合(TODO: 主要实现该部分逻辑)
        commands = game.main(input_state)

        # 格式化并输出命令集合
        output_data = api.format_output_commands(commands)

        api.output(output_data, is_commands=True)

    except KeyboardInterrupt:
        # 处理Ctrl+C中断
        api.output('[]', is_commands=True)
        sys.exit(0)
    except Exception:
        # 处理其他异常
        error_stack = traceback.format_exc()
        api.output(f'程序执行错误: {error_stack}', file=sys.stderr)
        api.output('[]', is_commands=True)
        sys.exit(1)


if __name__ == '__main__':
    main()
